/*
*   Fichier :		FPGA.cpp
*	Auteurs :		P12
*   Date :			2013-04-03
*   Version :		vSuivieProjet
*	Description :	Classe representant un FPGA
*/

#include <iostream>
#include <string>
#include "FPGA.h"

using namespace std;

/*
 * Constructeur
*/
FPGA::FPGA() {
	etatSW = 0x00;
	etatLD = 0x01;
	etatBTN = 0x0;
	etatAN0 = 0xc;
	etatAN1 = 0xc;
	etatAN2 = 0xc;
	etatAN3 = 0xc;

	ecrireLD();
	ecrireAN0();
	ecrireAN1();
	ecrireAN2();
	ecrireAN3();
}

/*
 * Methode reset
*/
void FPGA::reset() {
	etatSW = 0x00;
	etatLD = 0x0;
	etatBTN = 0x0;
	etatAN0 = 0x0;
	etatAN1 = 0x0;
	etatAN2 = 0x0;
	etatAN3 = 0x0;

	ecrireLD();
	ecrireAN0();
	ecrireAN1();
	ecrireAN2();
	ecrireAN3();
}

// Getters
const int FPGA::getEtatSW() {
	return etatSW;
}

const int FPGA::getEtatLD() {
	return etatLD;
}

const int FPGA::getEtatBTN() {
	return etatBTN;
}

const int FPGA::getEtatAN0() {
	return etatAN0;
}

const int FPGA::getEtatAN1() {
	return etatAN1;
}

const int FPGA::getEtatAN2() {
	return etatAN2;
}

const int FPGA::getEtatAN3() {
	return etatAN3;
}

// Setters
void FPGA::setEtatLD(int newEtat) {
	etatLD = newEtat;
}

void FPGA::setEtatAN0(int newEtat) {
	etatAN0 = newEtat;
}

void FPGA::setEtatAN1(int newEtat) {
	etatAN1 = newEtat;
}

void FPGA::setEtatAN2(int newEtat) {
	etatAN2 = newEtat;
}

void FPGA::setEtatAN3(int newEtat) {
	etatAN3 = newEtat;
}

bool FPGA::lireSW() {
	return commFPGA.lireRegistre(SW, etatSW);
}

bool FPGA::lireBTN() {
	return commFPGA.lireRegistre(BTN, etatBTN);
}

bool FPGA::lireLD() {
	return commFPGA.lireRegistre(LD, etatLD);
}

bool FPGA::ecrireLD() {
	return commFPGA.ecrireRegistre(LD, etatLD);
}

bool FPGA::ecrireAN0() {
	return commFPGA.ecrireRegistre(AN0, etatAN0);
}

bool FPGA::ecrireAN1() {
	return commFPGA.ecrireRegistre(AN1, etatAN1);
}

bool FPGA::ecrireAN2() {
	return commFPGA.ecrireRegistre(AN2, etatAN2);
}

bool FPGA::ecrireAN3() {
	return commFPGA.ecrireRegistre(AN3, etatAN3);
}

bool FPGA::estOk() {
	return commFPGA.estOk();
}

void FPGA::messageErreur(string messageAdditionnel) {
	cout << commFPGA.messageErreur() << endl;
	cout << messageAdditionnel << endl << endl;
}